/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package view;

import java.util.ArrayList;
import model.dao.AlunoDao;
import model.dao.DisciplinaDao;
import model.dao.ProfessorDao;
import model.dao.TurmaDao;
import model.dominio.Aluno;
import model.dominio.Atividade;
import model.dominio.Disciplina;
import model.dominio.Falta;
import model.dominio.Professor;
import model.dominio.Turma;

/**
 *
 * @author
 */
public class TurmaView {

    public void menu() {
        System.out.println("=======Turmas=======");
        System.out.println("1 - Registrar Turma");
        System.out.println("2 - Buscar Turma");
        System.out.println("0 - Sair");
        int op = 0;

        op = Console.readInteger();
        switch (op) {
            case 1:
                cadastro();
                break;
            case 2:
                buscar();
                break;
            case 0:
                //não faz nada, só volta ao menu acima.
                break;
            default:
                System.out.println("Opção inválida");
                this.menu();
        }
    }

    public void cadastro() {

        System.out.println("Escolha a disciplina");
        ArrayList<Disciplina> disciplinas = new DisciplinaDao().buscarVarias();
        for (int i = 0; i < disciplinas.size(); i++) {
            System.out.println(disciplinas.get(i).getCodigoDisciplina() + " - " + disciplinas.get(i).getNome());
        }
        Disciplina disciplina = new Disciplina();
        disciplina.setCodigoDisciplina(Console.readInteger());

        System.out.println("Escolha o professor");
        ArrayList<Professor> professores = new ProfessorDao().buscarVarios();
        for (int i = 0; i < professores.size(); i++) {
            System.out.println(professores.get(i).getCodigoProfessor() + " - " + professores.get(i).getNome());
        }

        Professor professor = new Professor();
        professor.setCodigoProfessor(Console.readInteger());

        System.out.println("Digite o Ano da Turma");
        int ano = Console.readInteger();
        System.out.println("Digite o periodo da Turma");
        int periodo = Console.readInteger();
        System.out.println("Digite o local da Turma");
        String local = Console.readString();
        System.out.println("Digite o horário da Turma");
        String horario = Console.readString();
        System.out.println("Digite o numero de vagas da Turma");
        int vagas = Console.readInteger();

        System.out.println("Escolha os alunos (digite 0 para terminar)");
        ArrayList<Aluno> alunos = new AlunoDao().buscarVarios();
        ArrayList<Aluno> alunos2 = new ArrayList();
        for (int i = 0; i < alunos.size(); i++) {
            System.out.println(alunos.get(i).getCodigoAluno() + " - " + alunos.get(i).getNome());
        }
        Aluno aluno;
        int codigoAluno = 0;
        int contVagas = vagas;
        do {
            codigoAluno = Console.readInteger();
            if (codigoAluno != 0) {
                aluno = new Aluno();
                aluno.setCodigoAluno(codigoAluno);
                alunos2.add(aluno);
            }
            contVagas--;
        } while (codigoAluno != 0 && contVagas > 0);

        Turma turma = new Turma();
        turma.setAno(ano);
        turma.setHorario(horario);
        turma.setPeriodo(periodo);
        turma.setLocal(local);
        turma.setNumVagas(vagas);
        turma.setDisciplina(disciplina);
        turma.setProfessor(professor);
        turma.setAlunos(alunos2);

        if (new TurmaDao().registrar(turma)) {
            System.out.println("Turma registrada!");
        }

    }

    public void buscar() {
        ArrayList<Turma> turmas = new TurmaDao().buscarVarias();

        ArrayList<Disciplina> disciplinas = new DisciplinaDao().buscarVarias();
        for (int i = 0; i < disciplinas.size(); i++) {
            System.out.println((i + 1) + " - " + disciplinas.get(i).getNome());
        }
        System.out.println("Escolha a disciplina:");
        Disciplina disciplina = null;
        try {
            disciplina = disciplinas.get(Console.readInteger() - 1);
        } catch (Exception e) {
            System.out.println("Codigo Inválido, tente novamente.");
            buscar();
        }
        System.out.println("Digite o ano:");
        int ano = Console.readInteger();
        System.out.println("Digite o periodo");
        int periodo = Console.readInteger();
        Turma turma = null;
        for (int i = 0; i < turmas.size(); i++) {
            turma = turmas.get(i);
            if (turma.getDisciplina().getCodigoDisciplina() == disciplina.getCodigoDisciplina() && turma.getAno() == ano && turma.getPeriodo() == periodo) {
                break;
            }
        }
        if (turma == null) {
            System.out.println("Nenhuma turma foi encontrada");
        } else {
            ArrayList<Falta> faltas = turma.getFaltas();
            ArrayList<Atividade> atividades = turma.getAtividades();
            Falta falta;
            Aluno aluno;
            float notaFinal = 0;
            System.out.println("CPF - Aluno - Faltas - Nota Final (%) - Situação");
            for (int i = 0; i < faltas.size(); i++) {
                falta = faltas.get(i);
                aluno = falta.getAluno();
                System.out.print(aluno.getCpf() + " - " + aluno.getNome());
                System.out.print(" - " + falta.getFaltas());
                notaFinal = turma.getNotaFinal(aluno.getCodigoAluno());
                notaFinal = ((notaFinal / turma.getValorTotalNotas()) * 100);
                System.out.print(" - " + notaFinal);
                int vFaltas=falta.getFaltas();
                int vCarga = turma.getDisciplina().getCargahoraria();
                double porcentFalta =(double) vFaltas/vCarga;
         
                if (porcentFalta <= 0.25 && notaFinal >= 60) {
                    System.out.println(" - Aprovado");
                } else {
                    System.out.println(" - Reprovado");
                }

            }
        }
    }
}
